#pragma once
#include "pch.h"


namespace FileSystem
{

    struct Path
    {
        fs::path m_Path;

        Path(const std::string &path);

        fs::path GetFilePath() const;

        std::string String() const;

        std::string GetFileName() const;

        std::string GetRelativePath() const;

        std::string GetAbsolutePath() const;

        std::string GetRelativeParentPath() const;

        std::string GetAbsoluteParentPath() const;

        bool HasExtension() const;

        std::string GetExtension() const;

        bool HasStem() const;

        std::string GetStem() const;

        void MakePrefered();

        bool Exist() const;

        void CreateDirectories() const;

        void CreateDirectory() const;

        void CopyTo(const fs::path &target);

        void Remove();

        void RemoveAll();

        void Rename(const std::string& target);
    };
};
